Content: let viewers pin shared sidebar pages - #2412
Conversation
This comment has been minimized.
This comment has been minimized.
|
Here's a visual recap of what changed: Open the full interactive recap |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
…-viewer-favorite # Conflicts: # templates/content/app/components/editor/database/sidebar.tsx # templates/content/app/components/sidebar/DocumentTreeItem.tsx
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Builder reviewed your changes — looks good ✅
Review Details
Incremental Code Review Summary
The latest PR head keeps the same eight-file sidebar change: shared action availability is centralized, viewer rows expose personal Pin/Unpin independently of shared Page authority, and both database and document-tree rows retain a stable overflow-before-add-child layout. I compared the refreshed diff and surrounding permission/action code against the prior clean review. The three parallel incremental reviews found no new confirmed regressions. One reviewer raised the existing canEdit !== false default semantics for absent optional fields; this is unchanged from the prior reviewed implementation and matches the established Content behavior for legacy/local records, so it is not a new incremental finding and is not resubmitted.
The latest focused tests and server-side checks continue to cover viewer-only menus, private favorite authorization, disabled-plus behavior, role regressions, ordering, and callback safety. No schema, shared authorization, or mutation contract changes were introduced.
🧪 Browser testing: Attempted after this review, but visual verification is infra-unavailable — /content returned 200 and the dev server was healthy, while all browser executors again lacked Chrome automation tools. Role fixtures and server-side viewer pin/unpin checks were prepared and verified for a later rerun.

Problem
The Content sidebar coupled personal Pin to sidebar / Unpin from sidebar actions to shared edit/manage permission. A view-only collaborator therefore lost the entire overflow menu, even though pinning is private to that person. Viewer rows also shifted because the add-child slot disappeared.
Approach
Separate personal sidebar capability from shared Page authority, preserving current-main pin vocabulary and per-user sidebar ordering. Each live row implementation keeps a stable two-slot action cluster: overflow first, then add-child. When child creation is unavailable, the plus remains visible as a native-disabled, muted control.
What changed
DatabaseSidebarRowandDocumentTreeItem; current-main pinned rows continue through the database-row path.Safety
This does not change Page roles or grant shared mutations. Viewers still cannot delete, move, create children, drag, or perform other shared changes. There are no schema, action, application-state, or feature-flag changes.
Verification
0cb5102a6e6015e92f8d9368842e4ef8cd45b738; integrated merge base:60749ec7730dc1d5523c8745e70a27c5b7b65a03.main:64c93b4ed55e0c1fe8b1a4fd1a91210c6e7d212b. Its post-candidate delta is limited to package-release metadata, Netlify ignore script/tests, and Clips player/comment code, classified acceptance-disjoint from Content sidebar and sharing authorization.e7ec1ca64520fe0748e1892409cffc11ce0fbe65b611c785f88ca6caaf4c06ab.Pin to sidebar; pinning created the private Pinned membership whose menu contained onlyUnpin from sidebar; unpinning restored the observed initial unpinned baseline. The final menu again contained onlyPin to sidebar. No shared mutation was exposed or performed. Screenshots are retained in the governing task evidence directory.Review focus